﻿using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using AppAcc.Models;

namespace AppAcc.Views.KTTH
{
    public partial class FormChungTuTongHop : DevComponents.DotNetBar.RibbonForm
    {
        private PhanMenKeToanEntities1 db = new PhanMenKeToanEntities1();
        private string idtam = "";
        private int co = 0;
        public FormChungTuTongHop()
        {
            InitializeComponent();
        }

        private void dgvChungTu_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            var rowindex = e.RowIndex;
            var row = dgvChungTu.Rows[rowindex];
            idtam = row.Cells["Id"].Value.ToString();
            KiemTra();
            var f = new FormChungTuTongHopChinhSua { idct = idtam };
            f.ShowDialog();
        }

        private void dgvChungTu_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            var rowindex = e.RowIndex;
            var row = dgvChungTu.Rows[rowindex];
            idtam = row.Cells["Id"].Value.ToString();
            KiemTra();
            GetChungTuChiTiet();
        }

        private void dgvChungTu_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            var rowindex = e.RowIndex;
            var row = dgvChungTu.Rows[rowindex];
            idtam = row.Cells["Id"].Value.ToString();
            KiemTra();
            var f = new FormChungTuTongHopChinhSua { idct = idtam };
            f.ShowDialog();
        }

        private void dgvChungTu_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Right) return;
            var ht = dgvChungTu.HitTest(e.X, e.Y);
            var rowindex = ht.RowIndex;
            if (rowindex == -1) return;
            var row = dgvChungTu.Rows[rowindex];
            idtam = row.Cells["Id"].Value.ToString();
            if (ht.ColumnIndex != -1 && ht.RowIndex != -1)
            {
                var Menu = new ContextMenuStrip();
                var lammoi = new ToolStripMenuItem("Làm mới");
                lammoi.MouseDown += bttLamMoi_Click;
                var edit = new ToolStripMenuItem("Chỉnh sửa");
                edit.MouseDown += bttChinhSua_Click;
                var xoa = new ToolStripMenuItem("Xóa");
                xoa.MouseDown += bttXoa_Click;
                Menu.Items.AddRange(new ToolStripItem[] { lammoi });
                Menu.Items.AddRange(new ToolStripItem[] { edit });
                Menu.Items.AddRange(new ToolStripItem[] { xoa });
                dgvChungTu.ContextMenuStrip = Menu;
            }
            else
                dgvChungTu.ContextMenuStrip = null;
            KiemTra();
        }

        private void dgvChungTu_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            var rowindex = e.RowIndex;
            var row = dgvChungTu.Rows[rowindex];
            idtam = row.Cells["Id"].Value.ToString();
            KiemTra();
            GetChungTuChiTiet();
        }
        private void FormChungTuTongHop_Load(object sender, EventArgs e)
        {
            GetListChungTu();
        }
        private void bttTimKiem_Click(object sender, EventArgs e)
        {
            TimKiem();
        }

        private void bttThemMoi_Click(object sender, EventArgs e)
        {
            var f = new FormChungTuTongHopThemMoi();
            f.ShowDialog();
        }

        private void bttChinhSua_Click(object sender, EventArgs e)
        {
            var f = new FormChungTuTongHopChinhSua { idct = idtam };
            f.ShowDialog();
        }

        private void bttXoa_Click(object sender, EventArgs e)
        {
            Delete();
            GetListChungTu();
        }

        private void bttLamMoi_Click(object sender, EventArgs e)
        {
            GetListChungTu();
        }
        void GetListChungTu()
        {
            var ds = db.ChungTus.Where(t => t.TrangThai == 9);
            dgvChungTu.DataSource = ds.ToList();
            FillSearch();
            FilldgvChungTu();
            if (ds.Count() > 0)
            {
                FilldgvChungTuChiTiet();
                var row = dgvChungTu.Rows[0];
                var tt = row.Cells["Id"].Value.ToString();
                dgvChungTuChiTiet.DataSource = db.ChungTuChiTiets.Where(t => t.ChungTuId == tt).ToList();
            }
            Reset();
            KiemTra();
        }

        void FillSearch()
        {
            co = 0;
            cbbNhomDoiTac.DataSource = db.NhomDoiTacs.ToList();
            cbbNhomDoiTac.DisplayMember = "TenNhomDoiTac";
            cbbNhomDoiTac.ValueMember = "Id";

            co = 1;
            cbbDoiTac.Enabled = false;
            cbbNhanVien.DataSource = db.NhanViens.ToList();
            cbbNhanVien.DisplayMember = "TenNhanVien";
            cbbNhanVien.ValueMember = "Id";
            dtiNgayChungTu.Value = DateTime.Now;
        }
        void Delete()
        {
            if (idtam != "")
            {
                var t = db.ChungTus.Find(idtam);
                if (MessageBox.Show("Bạn muốn xóa chứng từ: " + t.Id + "!", "Xác nhận", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question) != DialogResult.Yes) return;
                try
                {
                    db.ChungTus.Remove(t);
                    db.SaveChanges();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            else
            {
                MessageBox.Show("Bạn chưa chọn dữ liệu để xóa!");
            }
        }
        void Reset()
        {
            idtam = "";
            bttChinhSua.Enabled = false;
            bttXoa.Enabled = false;
        }
        void KiemTra()
        {
            if (idtam != "")
            {
                bttChinhSua.Enabled = true;
                bttXoa.Enabled = true;
            }
            else
            {
                bttChinhSua.Enabled = false;
                bttXoa.Enabled = false;
            }
        }

        void TimKiem()
        {
            FilldgvChungTu();
            var iddt = Convert.ToInt32(cbbDoiTac.SelectedValue);
            var idnv = Convert.ToInt32(cbbNhanVien.SelectedValue);
            var nct = Convert.ToDateTime(dtiNgayChungTu.Value);
            if (iddt != 0 && idnv != 0)
            {
                dgvChungTu.DataSource =
                db.ChungTus.Where(t => t.NgayChungTu == nct && t.DoiTacId == iddt && t.NhanVienId == idnv && t.TrangThai == 9);
            }
            else if (iddt == 0 && idnv != 0)
            {
                dgvChungTu.DataSource =
                db.ChungTus.Where(t => t.NgayChungTu == nct && t.NhanVienId == idnv && t.TrangThai == 9);
            }
            else if (iddt != 0 && idnv == 0)
            {
                dgvChungTu.DataSource =
                db.ChungTus.Where(t => t.NgayChungTu == nct && t.DoiTacId == iddt && t.TrangThai == 9);
            }
            else
            {
                dgvChungTu.DataSource =
                db.ChungTus.Where(t => t.NgayChungTu == nct && t.TrangThai == 9);
            }
            dgvChungTu.Refresh();
            FilldgvChungTuChiTiet();
            var row = dgvChungTu.Rows[0];
            var tt = row.Cells["Id"].Value.ToString();
            dgvChungTuChiTiet.DataSource = db.ChungTuChiTiets.Where(t => t.ChungTuId == tt).ToList();
            Reset();
            KiemTra();
        }
        void FilldgvChungTu()
        {
            var n = dgvChungTu.Columns["DoiTacId"] as DataGridViewComboBoxColumn;
            if (n != null)
            {
                n.DataSource = db.DoiTacs.ToList();
                n.DisplayMember = "TenDoiTac";
                n.ValueMember = "Id";
            }

            var nv = dgvChungTu.Columns["NhanVienId"] as DataGridViewComboBoxColumn;
            if (nv == null) return;
            nv.DataSource = db.NhanViens.ToList();
            nv.DisplayMember = "TenNhanVien";
            nv.ValueMember = "Id";
        }

        void FilldgvChungTuChiTiet()
        {
            var n = dgvChungTuChiTiet.Columns["TaiKhoanNo"] as DataGridViewComboBoxColumn;
            if (n != null)
            {
                n.DataSource = db.TaiKhoans.ToList();
                n.DisplayMember = "Id";
                n.ValueMember = "Id";
            }

            var c = dgvChungTuChiTiet.Columns["TaiKhoanCo"] as DataGridViewComboBoxColumn;
            if (c == null) return;
            c.DataSource = db.TaiKhoans.ToList();
            c.DisplayMember = "Id";
            c.ValueMember = "Id";
        }

        private void cbbNhomDoiTac_SelectedValueChanged(object sender, EventArgs e)
        {
            if (co != 1) return;
            var idndt = Convert.ToInt32(cbbNhomDoiTac.SelectedValue);
            cbbDoiTac.DataSource = db.DoiTacs.Where(t => t.NhomDoiTacId == idndt).ToList();
            cbbDoiTac.DisplayMember = "TenDoiTac";
            cbbDoiTac.ValueMember = "Id";
            cbbDoiTac.Enabled = true;
        }

        void GetChungTuChiTiet()
        {
            FilldgvChungTuChiTiet();
            if (idtam == "") return;
            dgvChungTuChiTiet.DataSource = db.ChungTuChiTiets.Where(t => t.ChungTuId == idtam).ToList();
            dgvChungTuChiTiet.Refresh();
            dgvChungTuChiTiet.Update();
        }




        //void GetDataChiTietChungTu()
        //{
        //    if (idtam == "") return;
        //    var dt = db.ChungTuChiTiets.Where(t => t.ChungTuId == idtam).ToList();
        //    var dttable = new DataTable();
        //    DataColumn column;
        //    DataRow row;
        //    column = new DataColumn { DataType = Type.GetType("System.Decimal"), ColumnName = "Id" };
        //    dttable.Columns.Add(column);
        //    column = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "PhieuTongHopId" };
        //    dttable.Columns.Add(column);
        //    column = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "TaiKhoanNo" };
        //    dttable.Columns.Add(column);
        //    column = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "TaiKhoanCo" };
        //    dttable.Columns.Add(column);
        //    column = new DataColumn { DataType = Type.GetType("System.Decimal"), ColumnName = "SoTien", AllowDBNull = true };
        //    dttable.Columns.Add(column);
        //    column = new DataColumn { DataType = Type.GetType("System.String"), ColumnName = "DienGiai", AllowDBNull = true };
        //    dttable.Columns.Add(column);
        //    foreach (var item in dt)
        //    {
        //        row = dttable.NewRow();
        //        row["Id"] = item.Id;
        //        row["PhieuTongHopId"] = item.PhieuTongHopId;
        //        switch (item.TrangThaiNoCo)
        //        {
        //            case 0:
        //                row["TaiKhoanNo"] = item.TaiKhoanId;
        //                break;
        //            case 1:
        //                row["TaiKhoanCo"] = item.TaiKhoanId;
        //                break;
        //            default:
        //                row["TaiKhoanNo"] = "";
        //                break;
        //        }
        //        if (item.SoTien != null)
        //        {
        //            row["SoTien"] = item.SoTien;
        //        }
        //        else
        //        {
        //            row["SoTien"] = DBNull.Value;
        //        }
        //        if (item.DienGiai != null)
        //        {
        //            row["DienGiai"] = item.DienGiai;
        //        }
        //        else
        //        {
        //            row["DienGiai"] = DBNull.Value;
        //        }
        //        dttable.Rows.Add(row);
        //    }
        //    dgvChiTietCTTH.DataSource = dttable;
        //}


    }
}